Voice of Vision Volume 2 Number 4 -- October 1994 Voice of Vision is a quarterly newsletter published by GW Micro. Subscription information is given at the end of the magazine. This issue is full of information for you technically-minded types. Chris Zenchenko talks about IBM Screen Reader/2, Mike Lawler discusses Internet access, and Jeff Pledger continues his series on memory management. If you aren't technically-minded, don't worry. Dan Weirich, GW Micro's electrical engineer, announces Speak-Out and Crista Shaikh has added some hints of help to any DOS user. -------------------- IBM Screen Reader/2...A Quick Look by Chris Zenchenko After reading and hearing many comments about IBM Screen Reader/2 (SR/2), I decided it would be worth a look. Most frequently I heard blind users could access Windows programs. OS/2 is an operating system that runs programs written for DOS, Windows, and, of course, OS/2. You can run programs from a desktop by selecting icons, or from DOS or Windows programs or prompts. Also, you can run programs from the OS/2 prompt. Now, of course, the real questions: does it work, and how does it work? The first thing is to get OS/2 installed. IBM says sighted assistance will be required for this step. They are not kidding! OS/2 boots from disks and if you can't see the screen, you will never know what the system is prompting for. It doesn't ask for the disks in the order you would expect. Once OS/2 is installed and working, it is time to open the Screen Reader package. Inside, you'll find the disks, keypad, cable, keypad card, cassette tutorial, key reference book in braille, and a small booklet and tape about Compu-Answer (more about this last item later.) You'll notice I said nothing about a manual or user guide. That's because it's contained in help folders that you can reach from the desktop. IBM suggests you attach an 18-key pad to assist with desktop functions. This pad is laid out like a touch-tone phone with two larger, extra keys on the right. These are the and keys. You can use your computer keyboard, but Screen Reader expects you to have the keypad, and doesn't work well without some configuration if you don't. On a real IBM, there is a mouse port that will run the keypad, but all other machines require a card to do the job. What they don't tell you is the card requires an interrupt, and IRQ7 is the only one it will use. It will not share this IRQ, so if you have a printer card with a port that uses IRQ7, the keypad won't work. After quite a battle, I managed to move my cards and change my IRQ configuration so the keypad would work. In the beginning, I couldn't figure out why the keypad didn't work. I called IBM, and after trying about fifteen different toll-free numbers, I learned that IBM doesn't support SR/2. You have to call a company called Compu-Answer. They provide all help through a one-year contract that's part of your Reader package. I wanted to get the keypad working because the tutorial had to be started with a keypad sequence. Fast and accurate information came my way from the Compu- Answer Screen Reader tech, and I was ready to start exploring the Reader and OS/2. First, go through the tutorial that comes with the package. This tells you the basics, and I do mean basics (I think reading through the reference book of key sequences told me more than two sixty-minute tapes.). Nevertheless, the tutorial helps you learn how to travel through the desktop and other early OS/2 menus and concepts. After completing the tutorial, my next project was to get to DOS and find out what I could run from OS/2. I set up my system in "dual boot" mode. That means I can boot to DOS or OS/2. I want to be able to run my standard set of programs no matter what happens. The best situation would be to run them from OS/2 by opening a DOS window. I tried that, and I got to the DOS prompt. Guess what. No speech, at least not without asking for it. Screen Reader lets you explore the screen with the keypad. Nothing written to the screen is spoken automatically without setting up autospeaks. (Autospeaks are like the hyper-active windows in Vocal-Eyes.) Autospeaks and viewports (windows) are part of a profile associated with your current window. There are only nine user-defined viewports and nine autospeaks. The best way to describe my reaction is to imagine the following normal situation. Running Vocal-Eyes, you might want to hear a directory from drive C:. You just type "DIR" and Vocal-Eyes does the rest. You hear the directory read out followed by the usual C: prompt. Now try this in a DOS session with SR/2. You hear nothing. That's right, not word one. You don't even hear the C: prompt. The only way to get this information is to review the screen. You could set up an autospeak to watch a line and speak a viewport, but the options are limited. An autospeak can only monitor up to eight characters on one line at a time, no matter what size your viewport is. You don't have many viewports to burn, so how do you deal with information like a directory? You could just have SR/2 read the whole screen whenever anything on line 25 changes, but that assumes that you have done enough commands to put the cursor on line 25. Through a language called PAL you can program SR/2 to watch for material on the screen, and even to search for situations that would call for reading the screen. PAL is not for beginners, and even an experienced user would have trouble learning it quickly. To program with PAL, you need to know everything about how an application writes to the screen. This includes color, font, location, and likely the text that is expected. At this point I was unhappy. Somewhat desperately, I tried running Vocal-Eyes with my Sounding Board, and it came right up. Now I had two readers running at the same time (SR/2 was running with my external Accent). With more miscellaneous junk in my computer, I was able to patch both voices to my stereo headphones. I was in business! One screen reader in each channel wasn't really a problem, since SR/2 wasn't saying much. Next, I wanted to use the task-switching and multi-tasking functions OS/2 provides. I opened a second DOS session and loaded Vocal-Eyes. It didn't work. It also didn't crash the system, so I closed the session and went back to the first DOS session. There may be ways to improve the situation, and I'll have to experiment. All this fun with DOS forced me to think about changing the DOS settings. These are what OS/2 uses to define what happens with hardware and software in a session. For you to understand what I am about to tell you, you must first understand the desktop and how one moves around in OS/2. OS/2 uses a collection of pushbuttons, checkboxes, radio dials, and all types of pull/pop/drag menus placed all over the screen. Some menus appear only when you're on a certain pushbutton, checkbox, or radio dial. If the profile you're using knows about the possibilities, things are fine. Movement around the standard desktop and in the help folders is well handled by SR/2. Buttons and icons are spoken when you move to them, and you can ask for a repeat. Now for the story, the problem, and the hard truth. I went to a pop-up menu that allowed me to find a pushbutton called Settings'. The menu included room for the path and working directory as well as icon information. Nothing there about changing COM ports and other hardware-related settings. I called Compu-Answer because I had a friend who insisted that I could change these things, but I couldn't find any way to do it. The answer was that on the right side of the screen are tabs that change the menu you're working with when you select them. How could I read the tabs? The screen viewport didn't include them and SR/2 said I was set to the full screen. If I had known they were there, I could have hit a key sequence on the keypad, and the focus would have moved to the tabs. This means I have to know what's on the screen, and there's no way to know what's on the screen if it's outside the viewport that SR/2 thinks is the full screen. Compu-Answer suggested I find someone with vision who could spend several days working with me to help me learn when there were choices that can't be read. Once I'm aware of the existence of other choices, I can move the focus and read them just fine. Another possibility is to use a key sequence on every screen to check for menus. These menus may be different depending on what icon/pushbutton/radio dial I am currently on. To explore completely, I'd have to move to each selection and try the sequence to find out what happens. Unfortunately, there is more than one sequence, and the choices and combinations are so vast that it's hard to comprehend. SR/2 comes with profiles and information that make it possible to get started with a graphical user interface (GUI), and with this in mind, I decided to take a look at Windows. When you load OS/2, a special version of Windows is loaded along with DOS and, of course, the OS/2 system. The differences between OS/2 Windows and a regular copy of Windows are transparent; when you select a Windows program or Windows full-screen you are in Windows as a sighted user would know it. The Windows program manager has a profile set up to work with it. This means movement from button to button is spoken. The process is handled almost as well as the OS/2 desktop, and it would be hard to tell the difference without the names of the icons. The trouble only begins when you try to run a Windows application. If there is a profile, or the screen has text that uses non-graphical fonts and information, you can explore and read the screen. Most Windows applications have a graphical screen you can't read. Using SR/2's information keys, you can find out if the screen is a graphical screen and even find out how many pixels it is from point a to point b. How helpful this information is depends on what you know about the program and screen you're looking at. The important thing to remember is IBM and the SR/2 group are only trying to make the basics available. They provide profiles for only the most common applications, and the manner in which you use the product will likely be vastly different from what you are used to. As my exploration of SR/2 continues, I am finding it is possible to learn the basic concepts of a GUI. I can even click mouse buttons from my keypad, and the SR/2 support tech says he knows of users who are doing mouse tracking with SR/2's tracking features. There are even a few users doing drawing and Computer- Aided Design (CAD) with the product. However, the IBM group that created SR/2 is not a priority for IBM, and many everyday tasks I hoped to do are difficult with the current version. I have been told I just need to learn to live with the shortcomings of the product. It is not designed to do more than make it possible to use a few of the most common applications. It's hard to compare this product with DOS screen readers. This is a new world, and the standard way we do things in DOS just doesn't apply to GUIs. I can say that SR/2 begins to allow us access to Windows and OS/2. How useful this access is depends on what a person has been doing in the past. For a new user who has no previous experience and finds the company environment set on OS/2 or Windows, SR2 offers a way to begin functioning in the work place. For an experienced DOS user interested in learning about graphic systems it provides a good look at OS/2 and Windows, but the customary functionality of DOS isn't there. Since SR/2 is not cheap, and the process may require changing hardware in your computer, you must be really interested in GUIs or have a valid work-related reason to justify buying this product. There is much to be learned, and SR/2 is a leg up in the direction computing seems to be heading. However, we may be facing limits that will take at least one more large leap in technology before full access for blind users is possible in these new environments. -------------------- Memory Management with QEMM by Jeff Pledger This is a continuation of the articles on memory management and specifically some parameters for using QEMM386.SYS. I will assume that you are currently working with QEMM version 7.03 and Manifest. In the last article we used the default settings to load the QEMM386.SYS program as your memory manager. Now it is time to "tweak" it till it hums a very nice tune. The bare bones minimum device line in your CONFIG.SYS file will read DEVICE=C:\QEMM\QEMM386.SYS RAM This "bare bones" line will make QEMM work with your system, but now it's time for some real interesting stuff. The first command parameter you should know about is the "exclude [x]" parameter. The command effectively blocks (excludes) QEMM from using the memory area specified. To fully understand memory ranges, I should give you a brief discussion of how memory is mapped in your computer. The area of memory we are concerned with in QEMM, is expanded or Upper memory. This is the memory area between 640 kb and 1Mb of memory on your computer (You can view how the memory on your system is distributed through using the Manifest program and using the set files I have written for the program.). Memory is displayed using the hexadecimal numbering scheme. To many of you this may sound like "Greek." If we examine how the hexadecimal system works in comparison to the decimal system, things should be clearer. In the decimal world, numbers as we know them in our normal activities, there are ten digits (0,1,2,3,4,5,6,7,8,9). It is commonly believed that we use "base ten" because we have ten fingers. Display of numbers is in powers of tens. Single digits are registered in the first place of the power of ten. Whenever we count to 10, we carry over a digit into the next tens place within our numbering scheme. This principle can be expanded ad infinitum to however many powers of 10 you wish to carry out. The number 100 is easily represented as 1 * 10^2. Now let's take this discussion to the hexadecimal world. Instead of having 10 fingers, through genetic science you now have 16 fingers. So the powers you use to represent the numbers are in sixteens instead of tens. The numbering scheme is as follows (0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f). For the digits 0 through 9 there should be no need for explanation; the value a equates to the decimal value of 10, b = 11, c=12, d = 13, e = 14, and f =15. The decimal number 16 is represented as 10 in hexadecimal notation. The rules we used for powers of ten hold true for the powers of sixteen. In other words, you would carry digits (fingers) over to the next place column within the numbering scheme whenever you reached the maximum number of digits (fingers) for any given place within the scheme. With that explanation out of the way, let's now talk about upper memory mapping. Upper memory is configured as 384kb of memory which is broken down further into six 64 kb ranges of memory. These 64 kb ranges are denoted with the hexadecimal values of a000-afff, b000-bfff, c000-cfff, d000-dfff, e000-efff, and f000-ffff. Let's examine one range as the numbering is the same for all ranges. We will look at the range a000-afff. Notice that each digit is represented in hexadecimal format. You can further break down this 64 kb range into 16 4 kb ranges, i.e. a100-a1ff, a200-a2ff, . . . af00-afff. This numbering scheme is identical for all of the six ranges. You use the exclude [x] parameter when there is a memory conflict between either hardware devices or software programs. For example, using the Arkenstone reader for DOS and the Calera TrueScan card, QEMM required you to exclude a memory range such as DC00-DEFF, so that QEMM would not overwrite the memory range and try to use the memory for other programs. Other devices which may need to have memory excluded are LAN (local area network) cards, floppy device controllers, etc. But we will get to that a little later in this article. To date, I have yet to have the need for excluding the memory address for a voice synthesizer, so please keep this in mind. The syntax for the exclude parameter is as follows: exclude [x]=xxxx-yyyy where xxxx and yyyy is a range of memory specified. Any parameter viewed within the [] is a shortcut symbol you could use in place of the parameter word. Remember, there must be no spaces either before or after the "=" or in the range specified. This parameter considers the range specified unmappable. "Tack" it on to the end of your current device line for QEMM386.SYS in your CONFIG.SYS file. The second of the parameters to discuss is the ROM parameter. I spoke of this parameter in my two previous articles. Now, it is time to address it in more detail. What the ROM parameter does is map either all or part of your system ROMS to RAM. This will improve the performance of any computer because of the simple fact that RAM is faster than ROM. The syntax for using this parameter is as follows: ROM=xxxx or ROM=xxxx-yyyy where xxxx is a specific memory location or xxxx-yyyy is a range of memory specified. Either the xxxx or xxxx-yyyy are optional for the ROM parameter. Minimally, you should put at least your video ROM into upper memory since the basic function of a speech access system is to read the DOS screen buffer and send the information to the voice synthesizer. If you can make data appear on the screen faster, obviously, your speech output will respond in a similar fashion. The syntax for using ROM in this instance is: ROM=C000 If you are going to put all of your ROMS into upper memory, you can define the range to use or you can let QEMM decide for you. The syntax for using this flavor of the ROM parameter is: ROM=XXXX-YYYY OR ROM When using upper memory to load all of your system ROMS you may find some difficulty in using this concept on older systems. This problem occurs because the older BIOS were using a timing algorithm to communicate with the floppy disk drive on your system. To explain in layman terms, your disk drive controller in your system controls not only the hard drive access, but access to your floppy drives as well. The problem is that the floppy disk drive controller used a timing scheme to communicate with the floppy drive. Since you now have moved your ROMS, including the ROMS which control this floppy disk drive, into RAM, the system is running too fast for the BIOS to catch up. Consequently, your system will tell you the error message: "Drive door not closed. abort, retry, fail" To fix this problem you must locate the 4 kb range where your floppy disk drive controller is located within your system. A hint for you is that it is located somewhere in the F000-FFFF range of upper memory. There is no rhyme or reason as to which 4kb memory address range must be excluded, so you will have to use trial and error. Another hint for you is that I had the same problems on both my Gateway 2000 386/25MHz and my Everex 486/33 MHz systems. The Gateway used Phoenix BIOS while the Everex used AMI BIOS. For my Gateway the memory range to exclude was FE00-FEFF, while on the Everex the range was F800-F8FF. This is not to say that all Phoenix and AMI ROMS for the floppy disk drive controller are located at these addresses; however, you might try them as a starting point. The third parameter I will discuss is the use of the Stealth ROM parameter. You should only use this parameter if, during QEMM's optimize process, QEMM could not load all of your TSR and device drivers high so you are instructed to try to use the Stealth process to load additional programs high. QEMM will test your system for which parameter it can use, either the ST:M or ST:F. Let QEMM do this as it knows best which parameter to use. My only caution to using this parameter is that you may find your machine performs more slowly when using it because of the mapping algorithm QEMM is using. Well space and time limit me to these parameters so I will leave you now to work at optimizing your systems to your heart's content. Always remember, have a floppy disk which you can boot your system from just in case you do something that locks your system up. The parameters discussed here were available in earlier versions of QEMM and can be found in the manuals from Recording for the Blind. -------------------- GW Micro Announces Internet Access by Mike Lawler GW Micro is pleased to announce that we now have Internet access. We would like to thank the Computer Science Department at Ball State University for providing our link to the Internet. We believe that this service will add yet another layer of support to the outstanding support system that we have established for our products and services. In this article I will outline all of the Internet services that we offer and describe how they can be used. People who subscribe to delphi, CompuServe, America on line, and Prodigy can also make use of these services. The Internet, for readers who are not Internet users, is a world-wide "network" of computers and computer systems. Many people have Internet access by virtue of their association with a university. Others access it through systems like those listed above. Using the Internet, it is possible to communicate with users anywhere in the world. Many people have asked us to provide a way for them to retrieve files from our BBS over the Internet. We have established a mail server that will allow you to do this. A mail server is a program that will automatically answer requests that are sent to it. The address for our mail server is listserv@gwmicro.com. You can send commands to this address in the body of a mail message and the mail server will respond to these commands. If you want to know how to use the server send the command help. If you want to get an index of the files on our BBS send the command index. Finally, if you want to get the latest issue of our news letter send the command get gwvov. When the server receives one of these commands it will send you the information that you have requested. If the server doesn't understand your request it will send you a help message. This mail server can be used to obtain any of the files on our BBS through the Internet. In order to use this service you will need to have the uudecode program. Uuencodeing is a process that converts binary files into a format that can be sent over the Internet. All of the files on our BBS are in binary format so they must be uuencoded before they can be sent over the Internet. Most Internet sites have uudecode programs to decode these files. The uudecode program is also available for PC's. If you need this program feel free to download it from our BBS. Another Internet service that we have implemented is the GW Micro mailing list. We established this list for people to discuss GW Micro related issues. Some example topics would be articles in this newsletter or Vocal-Eyes-related questions. The address to use when sending messages to the mailing list is gw-info@gwmicro.com. To subscribe to the list send a message to listserv@gwmicro.com with the command subscribe gw-info and your real name in the body of the message. For example if I were going to subscribe to the list I would send a message to listserv@gwmicro.com. This message would contain the command subscribe gw-info Mike Lawler We hope that you find these services useful. Here is a list of all of the Internet addresses at GW Micro. Doug Geoffray's personal address geoffray@gwmicro.com Dan Weirich's personal address dan@gwmicro.com Crista Shaik's personal address crista@gwmicro.com Mike Lawler's personal address mdlawler@gwmicro.com GW Micro support and inquiries support@gwmicro.com our mail server listserv@gwmicro.com the gw-info mailing list gw-info@gwmicro.com -------------------- Speaking Out on Speak-Out by Dan Weirich Finally! Speak-Out is alive, well and shipping. If you've been waiting, thank you for your patience. For those who don't know, Speak-Out is our new, battery-powered, external speech synthesizer. Speak-Out is an extremely responsive synthesizer. It has both parallel and serial ports, both are always active, and it uses standard Centronics parallel and 9 pin D serial connectors-- NO EXPENSIVE SPECIAL CABLES ARE NEEDED. Since both parallel and serial ports are active, you can literally connect Speak-Out to two computers at once. Or, if you are using a computer with only one parallel and one serial port, you can easily transfer Speak-Out from one to the other. There are no EPROMS in Speak-Out. We have the capability of upgrading the text-to-speech software or adding an additional feature by uploading through the serial port. It has a rapid charge circuit which allows the batteries in Speak-Out to be fully recharged in ninety minutes. Because of the rapid charge circuit, even a fifteen-minute charge provides operation for a long time. In a pinch you can use the 9V battery adapter to use a standard 9V alkaline battery if you have run the NiCads down and can't get to an AC outlet easily. Upon turning on the power switch, Speak-Out announces whether it is "not charging," "trickle charging," or "rapid charging." Therefore, if you plug the charger into an outlet that doesn't work, Speak-Out can tell you. The carrying case includes a lower section for the AC adapter/charger, a disk pocket, a belt clip, a short carrying strap, and a long carrying strap which can be slung over the shoulder or worn around the waist "fanny pack" style. Many of Speak-Out's features are available at the touch of a button using your computer's keyboard. The hot keys include date/time, voice on/off, speech rate up/down, volume up/down, punctuation, hyperscan on/off, rewind, fastforward, pause/continue and enable/disable hot keys. In addition, Speak-Out has four small round buttons in the center of the front panel. If you press the left button you will hear the current time. The up and down buttons activate the rewind and fastforward feature. You do not have to purchase any optional devices to use rewind and fastforward. Finally, if you press the key on the right you will enter the menus. The menus allow a large variety of settings and configurations. Two interesting settings are those for alarms and timers. The twenty-six alarms can be set to go off at specific times and dates and even tell you messages such as "Send aunt Mary an anniversary card". You can even have a message such as "Take your vitamin pills" spoken daily. The timer feature is designed for a more short-term event. Suppose you want to know when forty-five minutes have elapsed in order to attend a meeting-- Speak-Out can tell you just that. Speak-Out supports an exception dictionary so that you may customize the pronunciation of certain words. This dictionary is then stored within Speak-Out, as is the text-to-speech software, and travels wherever it goes. I've tried to be both brief and complete at the same time (which is impossible, I know). I've tried to list some of Speak-Out's most important features. Please give us a call if you want to learn more. -------------------- Hints for New Users (and everybody else) Have you ever wanted to get a list of files without all that extra information? Sometimes I'm not interested in the volume label or the bytes free, I just want to know the file names. The DOS DIR command has a switch which will do that for you. Try this: DIR /b Of course, do this when you're at the DOS prompt. Instead of getting a list which tells you volume label, serial number, directory name, list of files with sizes, dates, times, and a disk space summary at the bottom, you'll get files and directory names only. If you like to use the Vocal- Eyes clipboard, you'll also be pleased to note that file names and extensions are joined with a period, rather than being separated by one or more spaces. You can clip a file name off the screen and put it into another command instead of having to remember the whole thing or clip the name and remember the extension. -------------------- Announcements If you're a frequent user of our bulletin board, you'll be happy to know that we have upgraded our modem to a U.S. Robotics V.everything. This modem supports speeds up to 28800 BPS with the V.34 and the VFC protocols. Have you seen the DECtalk Express from Digital Equipment Corporation? It has the same high-quality, human-like speech as the DECtalk PC, but is housed in a small, external case. It connects to the serial port of your PC and runs on AC or its NiCad batteries. It's the solution for users who want DECtalk speech on a computer that won't accommodate a full-length card such as a notebook or microchannel machine. Call us for pricing and details. -------------------- Subscription Information Voice of Vision is published four times a year in large print, on audio cassette, on 5.25- or 3.5-inch PC diskette, and in Braille. You can receive a subscription for $10.00 for each format. VV is also available on GW Micro's bulletin board at no charge. Payment can be made by check, MasterCard, Visa, American Express, or Discover. Send checks and format specifications to the address below. We seek reader input. If we use an article you've submitted, you'll receive a year's subscription at no charge. Please send articles on IBM compatible diskette or in print to: GW Micro, Inc. 310 Racquet Dr. Fort Wayne, IN 46825 If you have any questions or comments, please contact us at: Voice: (219) 483-3625. Fax: (219) 482-2492 BBS: (219) 484-0210 Internet: crista@gwmicro.com